package com.cmc.cloud.cmclink.doc.vo.specialcargoapplyvo;

import com.cmc.cloud.cmclink.doc.vo.specialcargocntrvo.SpecialCargoCntrBaseVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 特种货审批主信息创建 Request VO
 * 
 * @author codegen
 */
@Schema(description = "管理后台 - 特种货审批主信息创建 Request VO")
@Data
public class ApplyCreateOrUpdateReqVO {

    @Schema(description = "申请主信息ID,更新需要传")
    private Long id;

    @Schema(description = "复制信息标志")
    private Boolean copyFlag;

    @Schema(description = "是否合作方")
    private Boolean partnerFlag;

    @Schema(description = "申请号", requiredMode = Schema.RequiredMode.REQUIRED)
    @Length(max = 20, message = "{ApplyCreateOrUpdateReqVO.applyNo.length}")
    private String applyNo;

    @Schema(description = "申请类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotBlank(message = "{ApplyCreateOrUpdateReqVO.applyType.notBlank}")
    @Length(max = 20, message = "{ApplyCreateOrUpdateReqVO.applyType.length}")
    private String applyType;

    @Schema(description = "客户参考号")
    @Length(max = 50, message = "{ApplyCreateOrUpdateReqVO.referenceNo.length}")
    private String referenceNo;

    @Schema(description = "订舱号", requiredMode = Schema.RequiredMode.REQUIRED)
    @Length(max = 50, message = "{ApplyCreateOrUpdateReqVO.bookingNo.length}")
    private String bookingNo;

    @Schema(description = "超级白名单号")
    @Length(max = 50, message = "{ApplyCreateOrUpdateReqVO.praNo.length}")
    private String praNo;

    @Schema(description = "接舱方", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "{ApplyCreateOrUpdateReqVO.spaceOwner.notBlank}")
    @Length(max = 50, message = "{ApplyCreateOrUpdateReqVO.spaceOwner.length}")
    private String spaceOwner;

    @Schema(description = "接货地", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "{ApplyCreateOrUpdateReqVO.porCode.notBlank}")
    @Length(max = 5, message = "{ApplyCreateOrUpdateReqVO.porCode.length}")
    private String porCode;

    @Schema(description = "装货港", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "{ApplyCreateOrUpdateReqVO.polCode.notBlank}")
    @Length(max = 5, message = "{ApplyCreateOrUpdateReqVO.polCode.length}")
    private String polCode;

    @Schema(description = "卸货港", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "{ApplyCreateOrUpdateReqVO.podCode.notBlank}")
    @Length(max = 5, message = "{ApplyCreateOrUpdateReqVO.podCode.length}")
    private String podCode;

    @Schema(description = "目的地", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "{ApplyCreateOrUpdateReqVO.delCode.notBlank}")
    @Length(max = 5, message = "{ApplyCreateOrUpdateReqVO.delCode.length}")
    private String delCode;

    @Schema(description = "是否内支线", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "{ApplyCreateOrUpdateReqVO.inlandCargo.notNull}")
    private Boolean inlandCargo;

    @Schema(description = "是否过境CNSHA")
    private Boolean transitCnsha;

    @Schema(description = "申请备注", example = "你猜")
    @Length(max = 200, message = "{ApplyCreateOrUpdateReqVO.applyRemark.length}")
    private String applyRemark;

    @Schema(description = "申请状态", example = "1")
    @Length(max = 50, message = "{ApplyCreateOrUpdateReqVO.applyStatus.length}")
    private String applyStatus;

    @Schema(description = "数据来源")
    private String dataSource;

    @Schema(description = "申请人电话")
    @Length(max = 20, message = "{ApplyCreateOrUpdateReqVO.applyMobile.length}")
    private String applyMobile;

    @Schema(description = "申请人邮箱", requiredMode = Schema.RequiredMode.REQUIRED)
    @Length(max = 500, message = "{ApplyCreateOrUpdateReqVO.applyEmail.length}")
    private String applyEmail;

    @Schema(description = "危险品联系人")
    @Length(max = 50, message = "{ApplyCreateOrUpdateReqVO.applyName.length}")
    private String applyName;

    @Schema(description = "危险品联系人地址")
    @Length(max = 50, message = "{ApplyCreateOrUpdateReqVO.applyAddress.length}")
    private String applyAddress;

    @Schema(description = "危险品联系人传真")
    @Length(max = 50, message = "{ApplyCreateOrUpdateReqVO.applyFax.length}")
    private String applyFax;

    @Schema(description = "cntr信息")
    @Valid
    private List<SpecialCargoCntrBaseVO> sepcialCntrList;

    @Schema(description = "合作方航线信息")
    private List<SpecialCargoVoyageUpdateReqVO> voyageInfo;

}
